import request from"@/utils/request.js";
export const smartNavigate = (options) => {
	const {
		path,
		params = {},
		type,
		loginCheck = false
	} = typeof options === 'string' ?
		{
			path: options
		} :
		options;
	// 获取所有页面配置
	const pagesConfig = getCurrentPagesConfig();
	const isTabBarPage = checkIsTabBarPage(path, pagesConfig);
	executeNavigate(url, isTabBarPage, type);
}
// 获取当前小程序的所有页面配置
function getCurrentPagesConfig() {
	const pagesConfig = uni.getStorageSync('pagesConfig');
	if (pagesConfig) return pagesConfig;

	// 如果没有缓存，则从pages.json读取
	const appConfig = require('@/pages.json');
	uni.setStorageSync('pagesConfig', appConfig);
	return appConfig;
}

// 检查目标页面是否是TabBar页面
function checkIsTabBarPage(path, pagesConfig) {
	if (!pagesConfig.tabBar || !pagesConfig.tabBar.list) return false;

	// 处理路径格式（移除查询参数和前置斜杠）
	const cleanPath = path.split('?')[0].replace(/^\//, '');

	return pagesConfig.tabBar.list.some(item => {
		const itemPath = item.pagePath.replace(/^\//, '');
		return itemPath === cleanPath;
	});
}
// 构建带参数的URL
function buildUrlWithParams(path, params) {
	if (!params || Object.keys(params).length === 0) return path;

	const query = Object.keys(params)
		.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
		.join('&');

	return path.includes('?') ?
		`${path}&${query}` :
		`${path}?${query}`;
}
// 执行跳转
function executeNavigate(url, isTabBarPage, specifiedType) {

	if (specifiedType) {
		return uni[specifiedType]({
			url
		});
	}
	// 自动选择跳转方式
	if (isTabBarPage) {
		// // TabBar页面使用switchTab（注意：switchTab不支持传参）
		// if (url.includes('?')) {
		// 	console.warn('switchTab不支持传递参数，参数将被忽略');
		// 	uni.switchTab({
		// 		url: url.split('?')[0]
		// 	});
		// } else {
		// 	uni.switchTab({
		// 		url
		// 	});
		// }
	} else {
		// 普通页面使用navigateTo（默认）
		uni.navigateTo({
			url
		});
	}
}